package com.liang.crawlerjd.task;

import com.liang.crawlerjd.entity.Item;
import com.liang.crawlerjd.service.ItemService;
import com.liang.crawlerjd.utils.HttpUtils;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;

@Component
@Slf4j
public class ItemTask {

    @Autowired
    private HttpUtils httpUtils;

    @Autowired
    private ItemService itemService;

    //当下载任务完成后，间隔多长时间进行下一次任务
    @Scheduled(fixedDelay=100000)
    public void itemTask() throws Exception{
        String url = "https://search.jd.com/search?keyword=%E6%89%8B%E6%9C%BA&page=";

        // 作为Demo，我们只抓取手机分类下前五页数据（京东的分页是1 3 5，代表第1 2 3页）
        //for (int i = 1; i < 10; i=i+2) {
        //    String html = httpUtils.doGetHtml(url + i);
        //    // 解析HTML获取商品数据并存储
        //    this.parse(html);
        //}
        String html = httpUtils.doGetHtml(url + 1);
        // 解析HTML获取商品数据并存储
        this.parse(html);

        System.out.println("手机数据抓取完成！");
    }

    //解析页面，并存储
    private void parse(String html) {
        Document doc = Jsoup.parse(html);

        //获取spu信息
        Elements spuEles = doc.select("div#J_goodsList>ul>li");

        for (Element spuEle : spuEles) {
            //获取spu
            long spu=0;
            if(!spuEle.attr("data-spu").equals("")){
                spu = Long.parseLong(spuEle.attr("data-spu"));
            }
            System.out.println("spu:"+spu);

            //获取sku信息
            Elements skuEles = spuEle.select("li.ps-item");


            for (Element skuEle : skuEles) {
                //获取sku
                long sku=0;
                if(!skuEle.select("[data-sku]").attr("data-sku").equals("")){
                    sku = Long.parseLong(skuEle.select("[data-sku]").attr("data-sku"));
                }


                //根据sku查询商品数据
                Item item = new Item();
                item.setSku(sku);
                //List<Item> list = itemService.findAll(item);
                //
                //if(list.size()>0){
                //    //如果商品存在，就进行下一个循环，该商品不保存，因为已存在
                //    continue;
                //}

                //设置商品的spu
                item.setSpu(spu);

                //获取商品的详情的url
                String itemUrl = "https://item.jd.com/" + sku + ".html";
                item.setUrl(itemUrl);


                //获取商品的图片

                //String picUrl ="https:"+ skuEle.select("img[data-img]").first().attr("src");
                //
                //String picName = this.httpUtils.doGetImage(picUrl);
                //item.setPic(picName);

                //获取商品的价格
                //String priceJson = skuEle.select(".p-price > strong > i").first().text();
                //double price = Double.parseDouble(priceJson);
                //
                //item.setPrice(price);


                //获取商品的标题
                //String title="暂无标题";
                //if(!skuEle.select(".p-name > a > em").first().text().equals("")){
                //     title = skuEle.select(".p-name > a > em").first().text();
                //}
                //item.setTitle(title);
                //String title=skuEle.select(".p-name > a > em").first().text();
                //System.out.println("title:"+title);

                item.setCreated(new Date());
                item.setUpdated(item.getCreated());

                //保存商品数据到数据库中
                //itemService.save(item);

            }

        }
    }
}
